/*Diego Lima de Freitas RA: 317632
 *Yuri Souza Padua RA: 317420
 * 
 * Classe que trata expressões unárias da liguagem
 */

package AST;

import Lexer.Symbol;

public class UnaryExpr extends Expr {

    private Expr expr;
    private int op;

    public UnaryExpr(Expr expr, int op) {
        this.expr = expr;
        this.op = op;
    }

    @Override
    public void genC(PW pw, boolean putParenthesis) {
        switch (op) {
            case Symbol.PLUS:
                pw.out.print("+");
                break;
            case Symbol.MINUS:
                pw.out.print("-");
                break;
            case Symbol.NOT:
                pw.out.print("!");
                break;
            case Symbol.GETINTEGER:
//                pw.out.print("int "+this.vNew.getName());
//                pw.out.print(this.v.getName()+"= ");
//                pw.out.print("scanf("+"%d"+ ", "+"&"+this.vNew.getName()+");");
        }
        expr.genC(pw, false);
    }

    @Override
    public Type getType() {
        return expr.getType();
    }
}
